---
title: ステップ2：ナレッジパイプラインのオーケストレーション
---

# ナレッジパイプラインの構築

工場の生産ラインを例に考えてみましょう。各ステーション（ノード）が特定の作業を担当し、それらを連携させて部品を組み立て、最終製品を完成させます。ナレッジパイプラインの構築も同様のプロセスです。視覚的なワークフロー設計ツールを使用し、ドラッグ＆ドロップ操作だけで容易にデータ処理の流れを設計できます。これにより、ドキュメントの取り込み、処理、分割、インデックス化、検索戦略を自在に管理できます。

本ステップでは、ナレッジパイプライン全体のプロセス、各ノードの役割や設定方法について学び、独自のデータ処理フローをカスタマイズして、効率的にナレッジベースを管理・最適化する方法を解説します。

### インターフェースの状態

オーケストレーションキャンバスに入ると、次の状態を確認できます。
- **タブの状態**： 「Documents（ドキュメント）」「Retrieval Test（検索テスト）」「Settings（設定）」タブはグレーアウトされ利用不可です。
- **必要ステップ**：パイプラインのオーケストレーションと公開が完了しないと、ファイルアップロードやその他機能は利用できません。

選択したテンプレートによって、初期画面の表示が異なります。

**空白ナレッジベースパイプライン**を選択した場合は、ナレッジベースノードだけが配置されたキャンバスが表示され、ノード横のガイドの指示に従って作成を進めます。

![空白パイプライン](/images/knowledge-base/create-knowledge-pipeline-8.png)

**特定のパイプラインテンプレート**を選択した場合は、あらかじめワークフローが組まれた状態でキャンバスに表示され、すぐに利用・編集が可能です。

![テンプレートパイプライン](/images/knowledge-base/create-knowledge-pipeline-9.png)

## ナレッジパイプラインの全体プロセス

まず、ナレッジパイプラインにおける処理プロセスを分解し、ドキュメントがどのように検索可能なナレッジベースへと変換されるのかを理解しましょう。

ナレッジパイプラインは、以下の主要なステップから構成されます：

<Tip>
データソース → データ処理（抽出器＋分割器）→ ナレッジベースノード（分割構造＋検索設定）→ ユーザー入力フォーム → テスト＆公開
</Tip>

1. **データソース**：さまざまな情報源（ローカルファイル、Notion、Webページなど）からのコンテンツ
2. **データ処理**：データ内容の加工と変換  
   - 抽出器（Extractor）：ドキュメントの解析・構造化  
   - 分割器（Chunker）：構造化された内容を扱いやすい断片に分割  
3. **ナレッジベース**：分割構造と検索設定の構築
4. **ユーザー入力フォーム**：ユーザーがパイプライン実行時に必要なパラメータや情報を入力するための定義
5. **テスト＆公開**：設定の検証および運用開始

---

## ステップ1：データソースの設定

ナレッジベースには、単一または複数のデータソースを選択できます。現在、Difyでは主に4種類のデータソースをサポートしています：**ファイルアップロード、クラウドストレージ、オンラインドキュメント、Webクローラー**。

さらに多様なデータソースについては、[Dify Marketplace](https://marketplace.dify.ai)をご参照ください。

### ファイルアップロード

ローカルファイルはドラッグ＆ドロップまたはファイル選択でアップロードできます。

<div style={{display: 'flex', flexWrap: 'wrap', gap: '30px'}}>
  <div style={{flex: 1, minWidth: '200px'}}>
    ![ファイルアップロード](/images/knowledge-base/knowledge-pipeline-orchestration-1.PNG)
  </div>
  <div style={{flex: 2, minWidth: '300px'}}>
    **設定オプション**

    | 項目           | 説明                                |
    |----------------|------------------------------------|
    | ファイル形式    | PDF、XLSX、DOCXなどに対応             |
    | アップロード方法 | ドラッグ＆ドロップまたは選択、バッチ対応 |

    **制限事項**

    | 項目         | 説明                                            |
    |--------------|-------------------------------------------------|
    | ファイル数    | 1回あたり最大50ファイルまで                     |
    | ファイルサイズ | 1ファイルあたり最大15MB                         |
    | ストレージ    | サブスクリプションプランによりアップロード上限が異なります |

    **出力変数**

    | 出力変数       | 形式            |
    |----------------|-----------------|
    | `{x} Document` | 単一ドキュメント |
  </div>
</div>

---

### オンラインドキュメント

#### Notion

Notionワークスペースと連携し、ページやデータベースをシームレスにインポート可能です。ナレッジベースは常に自動で最新状態に保たれます。

<div style={{display: 'flex', flexWrap: 'wrap', gap: '30px'}}>
  <div style={{flex: 1, minWidth: '200px'}}>
    ![Notion](/images/knowledge-base/knowledge-pipeline-orchestration-2.PNG)
  </div>
  <div style={{flex: 2, minWidth: '300px'}}>
    **設定オプション**

    | 項目       | オプション | 出力変数        | 説明                    |
    |------------|------------|-----------------|------------------------|
    | Extractor  | 有効       | `{x} Content`   | 構造化・処理済み情報     |
    |            | 無効       | `{x} Document`  | オリジナルテキスト       |
  </div>
</div>

---

### Webクローラー

Webコンテンツを大規模言語モデルでも読みやすい形式に変換します。ナレッジベースはJina ReaderとFirecrawlをサポートしています。

#### Jina Reader

シンプルかつ使いやすいAPIを提供するオープンソースのWeb解析ツールです。Webコンテンツの高速クロールと処理に適しています。

<div style={{display: 'flex', flexWrap: 'wrap', gap: '30px'}}>
  <div style={{flex: 1, minWidth: '200px'}}>
    ![Jina Reader](/images/knowledge-base/knowledge-pipeline-orchestration-3.png)
  </div>
  <div style={{flex: 2, minWidth: '300px'}}>
    **パラメータ設定**

    | パラメータ         | 種類   | 説明                                           |
    |--------------------|--------|------------------------------------------------|
    | URL                | 必須   | 対象Webページのアドレス                      |
    | サブページのクロール | 任意   | リンク先ページもクロールするか                  |
    | サイトマップ使用   | 任意   | サイトマップを利用してクロール                  |
    | 制限               | 必須   | クロールする最大ページ数                        |
    | Extractor有効化     | 任意   | データ抽出方式の選択                           |
  </div>
</div>

#### Firecrawl

きめ細かなクロール制御オプションとAPIサービスを持つオープンソースのWeb解析ツールです。複雑なサイトの深層クロールやバッチ処理に適しています。

<div style={{display: 'flex', flexWrap: 'wrap', gap: '30px'}}>
  <div style={{flex: 1, minWidth: '200px'}}>
    ![Firecrawl](/images/knowledge-base/knowledge-pipeline-orchestration-4.png)
  </div>
  <div style={{flex: 2, minWidth: '300px'}}>
   **パラメータ設定**

   | パラメータ              | 種類   | 説明                                            |
   |-----------------------|--------|------------------------------------------------|
   | URL                   | 必須   | 対象Webページのアドレス                            |
   | 制限                   | 必須   | クロールする最大ページ数                           |
   | サブページクロール       | 任意   | リンク先ページもクロールするか                       |
   | 最大深度               | 任意   | 開始URLからクロールする階層の深さ                    |
   | 除外パス               | 任意   | クロール対象から除外したいURLパターン                 |
   | 限定パス               | 任意   | 指定したパスのみクロール                            |
   | Extractor            | 任意   | データ抽出方式の選択                                |
   | 主要コンテンツのみ抽出   | 任意   | ページの主要テキストやメディアのみ抽出                 |
  </div>
</div>

---

### クラウドストレージ

Google Drive、Dropbox、OneDriveなどのクラウドストレージサービスと連携し、Difyが自動でファイルを取得します。選択したドキュメントをインポートするだけなので、事前の手動ダウンロードは不要です。

<Tip>
認証に関するサポートが必要な場合は、[データソース認証ガイド](/ja-jp/guides/knowledge-base/knowledge-pipeline/authorize-data-source)をご参照ください。
</Tip>

---

## ステップ2：データ処理ツールの設定

このステップでは、コンテンツの抽出、分割、最適なナレッジベース用フォーマットへの変換を行います。これは、料理でいう「食材の下準備」と同じく、後に素早く加工できる状態を整える工程です。
　
### ドキュメントプロセッサ

PDF, XLSX, DOCXなど多様な形式のドキュメントが存在しますが、LLMはこれらをそのまま扱えません。そのため、抽出器（Extractor）が各種ファイルを解析・変換し、LLMが扱いやすい形式に変換します。

Difyのドキュメント抽出器、あるいはMarketplaceから「Dify Extractor」「Unstructured」等のツールを選択できます。

#### Doc Extractor（ドキュメント抽出器）

![Doc Extractor](/images/knowledge-base/knowledge-pipeline-orchestration-4-1.png)

情報処理の中核となり、入力ファイルを識別・読取・情報抽出を行い、次のノードで利用できる形式へ変換します。

<Tip>
詳細は[ドキュメント抽出器](/ja-jp/guides/workflow/node/doc-extractor)をご参照ください。
</Tip>

#### Dify Extractor

Dify Extractorは、Difyが提供する内蔵ドキュメント解析ツールです。一般的なファイル形式に幅広く対応し、特にDocファイルに最適化されています。画像抽出・保存や、画像URL返却も可能です。

![Dify Extractor](/images/knowledge-base/knowledge-pipeline-orchestration-5.png)

#### Unstructured

<div style={{display: 'flex', flexWrap: 'wrap', gap: '30px'}}>
  <div style={{flex: 1, minWidth: '200px'}}>
    ![Unstructured](/images/knowledge-base/knowledge-pipeline-orchestration-7.png)
  </div>
  <div style={{flex: 2, minWidth: '300px'}}>
    [Unstructured](https://marketplace.dify.ai/plugins/langgenius/unstructured)は、高度なカスタマイズ可能性を備えた抽出戦略でドキュメントを機械可読形式へ変換します。  
    抽出戦略（auto, hi_res, fast, OCR-only）や分割方法（by_title, by_page, by_similarity）に柔軟に対応。要素ごとの座標や信頼度、レイアウトなどリッチなメタデータも出力し、企業のドキュメントワークフローや混合タイプファイルの精密な処理に適しています。
  </div>
 </div>

<Tip>
他のツールについては[Dify Marketplace](https://marketplace.dify.ai)をご覧ください。
</Tip>

---

### 分割器（Chunker）

人間が一度に多くの情報を集中して理解できないように、LLMも大量情報の同時処理が苦手です。そのため、分割器は抽出後のドキュメントを小さな「チャンク」と呼ばれる断片に分割します。

用途やドキュメントの種類に応じ、最適な分割戦略が異なります。たとえば製品マニュアルは機能ごと、論文は論理セクションごとが理想的です。Difyでは主に3種類の分割器を用意しています。

#### 分割器の種類概要

| 分割器タイプ     | 特徴                                        | 最適用途                        |
|-----------------|---------------------------------------------|-------------------------------|
| 汎用分割器      | 固定サイズ分割、区切り文字のカスタマイズ可能 | シンプルなドキュメント           |
| 親子分割器      | 二層構造：マッチング精度＋豊富なコンテキスト | コンテキスト保持必須な複雑文書   |
| Q&Aプロセッサ   | スプレッドシートのQ&Aペア処理                 | 構造化Q&Aデータ（CSV/Excel等）   |

#### 共通テキスト前処理ルール

すべての分割器で利用できるテキストクリーニングオプション：

| オプション                        | 説明                                          |
|-----------------------------------|----------------------------------------------|
| 連続空白・改行・タブの統一         | 連続する空白文字を単一空白へ変換               |
| URL・メールアドレスの削除         | Webリンクやメールアドレスを自動検出し削除   |

#### 汎用分割器（General Chunker）

シンプルな構造の文書向けの基本的な分割モジュールです。テキスト分割や前処理オプションを柔軟にカスタマイズ可能です。

**入力と出力変数**

| タイプ     | 変数                  | 説明                                               |
|------------|----------------------|----------------------------------------------------|
| 入力変数   | `{x} Content`         | 分割対象となる文書コンテンツ                        |
| 出力変数   | `{x} Array[Chunk]`    | 分割済みコンテンツ配列（各要素は検索・分析向け）     |

**分割設定**

| 設定項目           | 説明                                                                     |
|-------------------|--------------------------------------------------------------------------|
| 区切り文字         | デフォルトは`\n`（段落区切り用改行）。正規表現も利用可。                  |
| 最大チャンク長     | 各セグメントの最大文字数（上限超過時は自動分割）                          |
| チャンク重複       | 分割時にセグメント間で部分重複させることで情報保持・検索精度を向上           |

#### 親子分割器（Parent-child Chunker）

クエリマッチング精度と豊富なコンテキスト両立のため、二層チャンク構造を採用しています。

**親子分割器の仕組み**

- **子チャンク（高精度マッチング用）**：通常、1文ごとの細かなセグメント
- **親チャンク（豊富なコンテキスト）**：該当する子チャンクを含む広い範囲（段落やセクション単位）

| タイプ     | 変数                       | 説明                         |
|------------|---------------------------|------------------------------|
| 入力変数   | `{x} Content`              | 原文テキスト                  |
| 出力変数   | `{x} Array[ParentChunk]`   | 親チャンク配列                |

**分割設定**

| 設定項目             | 説明                                             |
|---------------------|-------------------------------------------------|
| 親チャンク区切り文字   | 親チャンクの分割ルール設定                           |
| 親チャンク最大長      | 親チャンクの最大文字数                               |
| 子チャンク区切り文字   | 子チャンク分割ルール                                |
| 子チャンク最大長      | 子チャンクの最大文字数                               |
| 親モード             | 「段落」または「全文書」いずれか選択                   |

#### Q&Aプロセッサ

抽出＆分割を1ノードで実施。FAQやQ&Aペアをテーブルとして持つCSV／Excelファイル専用です。

**入出力変数**

| タイプ     | 変数                    | 説明                                 |
|-----------|------------------------|---------------------------------------|
| 入力変数   | `{x} Document`         | 単一ファイル                           |
| 出力変数   | `{x} Array[QAChunk]`   | Q&Aチャンク配列                        |

**変数設定**

| 設定項目         | 説明              |
|-----------------|------------------|
| 質問用カラム番号  | 質問内容の列番号    |
| 回答用カラム番号  | 回答内容の列番号    |

---

## ステップ3：ナレッジベースノードの設定

ドキュメントの処理・分割が完了したら、保存や検索の方法を設定します。ここでは、インデックス作成方法や検索戦略を用途に応じて選択可能です。

本ノードの設定項目は、入力変数、チャンク構造、インデックス方式、検索設定となります。

### チャンク構造

![チャンク構造](/images/knowledge-base/knowledge-pipeline-orchestration-8.png)

チャンク構造は、ナレッジベースが文書コンテンツをどう整理・インデックス化するかを定めます。用途やコストに適したモードを選択してください。

ナレッジベースは3つのチャンクモードをサポートします：**汎用モード**、**親子モード**、**Q&Aモード**。初めて設定する場合は親子モードが推奨されます。

<Warning>
**重要：** チャンク構造は一度保存・公開すると変更できません。慎重にご選択ください。
</Warning>

#### 汎用モード

標準的なドキュメント処理に最適です。ニーズに応じ、柔軟なインデックスと検索設定が選択可能です。

#### 親子モード

検索時の高精度マッチングと文脈提供が必要なエンタープライズ向け専門ドキュメントに最適です。HQ（高品質）インデックスのみ対応です。

#### Q&Aモード

構造化された質問回答データ向けです。Q&Aペアが質問部に基づいてインデックス化され、関連回答が検索できます。こちらもHQモードのみ対応です。

### 入力変数

入力変数はデータ処理ノードからの出力をナレッジベースのデータソースとして受け取ります。分割器の出力をナレッジベースノードへ接続します。

- **汎用モード**：`{x} Array[Chunk]`（汎用チャンク配列）
- **親子モード**：`{x} Array[ParentChunk]`（親チャンク配列）
- **Q&Aモード**：`{x} Array[QAChunk]`（Q&Aチャンク配列）

### インデックス方法と検索設定

インデックス方法はナレッジベース内のコンテンツ整理法を決定し、検索設定はそれに基づいた検索戦略を指定します。
ナレッジベースでは**高品質**と**コスト効率**の2方式があり、それぞれ検索方法が異なります。

**高品質モード**では、埋め込みモデル（Embedding）によりテキストをベクトル化し、意味的な関連性検索が可能です（完全一致でなくても適切な回答に辿り着けます）。

**コスト効率モード**では、各ブロックは10個のキーワードでインデックス化され、埋め込みモデルのコストは発生しません。

<Tip>
詳細は[インデックス方法と検索設定の選択](/ja-jp/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods)もご参照ください。
</Tip>

#### インデックス方法と検索設定概要

| インデックス方法 | 検索設定        | 説明                                                  |
|----------------|----------------|-----------------------------------------------------|
| 高品質         | ベクトル検索    | 意味的類似性（自然言語での深い検索）                  |
|                | 全文検索        | キーワードベースの包括的検索                         |
|                | ハイブリッド検索| 意味検索＋キーワード検索の組合せ                     |
| コスト効率     | 逆引きインデックス| 一般的な検索エンジン型方式                           |

詳細は以下の表をご参照ください。

| チャンク構造 | インデックス方法 | パラメータ        | 検索設定              |
|-------------|----------------|-------------------|----------------------|
| 汎用モード   | 高品質 <br /> <br /> <br /> コスト効率 | 埋め込みモデル <br /> <br /> <br /> キーワード数 | ベクトル<br/>全文<br/>ハイブリッド検索<br/>逆引きインデックス |
| 親子モード   | 高品質のみ       | 埋め込みモデル     | ベクトル<br/>全文<br/>ハイブリッド検索 |
| Q&Aモード    | 高品質のみ       | 埋め込みモデル     | ベクトル<br/>全文<br/>ハイブリッド検索 |

---

## ステップ4：ユーザー入力フォームの作成

ユーザー入力フォームは、パイプライン実行時に必要な初期情報をユーザーから収集します。[ワークフローの開始ノード](/ja-jp/guides/workflow/node/start)と同様に、必要な设置情報（アップロードファイル、特定パラメータなど）を収集し、パイプラインの柔軟性・利便性を高めます。

### フォームの作成方法

1. **パイプライン構築UI**
   - 「入力フィールド」をクリックして作成・設定を開始  
   ![入力フィールド](/images/knowledge-base/knowledge-pipeline-orchestration-9.png)

2. **ノードパラメータパネル**
   - ノード選択後、パラメータ入力欄の「+ ユーザー入力を作成」をクリック  
   ![ノードパラメータ](/images/knowledge-base/knowledge-pipeline-orchestration-10.png)

### ユーザー入力フィールドの追加

#### 各エントランス固有入力

![固有入力](/images/knowledge-base/knowledge-pipeline-orchestration-11.png)

これは各データソースや下流ノードに固有です。該当データソース選択時のみ入力対象となります（例：異なるURLの指定等）。

**作成方法**：データソース横の`+`ボタンからそのソース専用フィールドを追加できます。選択したソースからのみアクセス可能です。

![データソース固有入力](/images/knowledge-base/knowledge-pipeline-orchestration-12.png)

#### すべてのエントランス共通入力

![共通入力](/images/knowledge-base/knowledge-pipeline-orchestration-13.png)

全ノードから参照できるグローバル共有入力です。チャンク区切りや最大長等、汎用パラメータの入力に適します。

**作成方法**：グローバル入力の`+`ボタンから追加できます。

### サポートされる入力フィールドタイプ

ナレッジパイプラインでは7種の入力変数をサポートします：

<div style={{display: 'flex', flexWrap: 'wrap', gap: '30px'}}>
  <div style={{flex: 1, minWidth: '200px'}}>
    ![フィールドタイプ](/images/knowledge-base/knowledge-pipeline-orchestration-14.png)
  </div>
  <div style={{flex: 2, minWidth: '300px'}}>
    | フィールドタイプ | 説明                                                                 |
    |---------------|-----------------------------------------------------------------------|
    | テキスト      | 256文字以内の短文の入力欄                                               |
    | 段落         | 長文テキストの入力欄                                                    |
    | セレクト      | 設定済み候補リストから選択（カスタム不可）                               |
    | ブール値      | 真偽値                                                                 |
    | 数値         | 数値のみ入力                                                            |
    | 単一ファイル   | 単一ファイルアップロード（各ファイルタイプ対応）                        |
    | ファイルリスト | 複数ファイルの一括アップロード（各ファイルタイプ対応）                  |
  </div>
</div>

<Warning>
詳細は[入力フィールドのドキュメント](/ja-jp/guides/workflow/node/start#input-field)をご参照ください。
</Warning>

### フィールド設定オプション

全入力フィールドには必須／任意および追加設定があります。適切なチェックで必須化等を指定します。

| 設定               | 名称          | 説明                                               | 例                       |
|-------------------|---------------|--------------------------------------------------|--------------------------|
| 必須設定           | 変数名        | 内部識別用（英数字・アンダースコア推奨）           | `user_email`             |
|                   | 表示名        | UI上に表示される名称                              | ユーザーメール            |
| タイプ固有設定    |               | タイプごとの条件                                  | テキストの最大長制限等     |
| 追加設定           | デフォルト値   | 未入力時の既定値                                  | 数値は0、テキストは空文字  |
|                   | プレースホルダー | 入力欄が空のときのヒント表示                      | 「メールアドレス入力」      |
|                   | ツールチップ   | 補足説明（マウスホバー時表示）                    | 「有効なメールアドレスを…」 |
| 特殊任意設定       |               | タイプごとの特殊バリデーション                    | メール形式チェック等        |

設定後、右上のプレビューボタンで実際のフォーム動作確認やフィールド並び替えが可能です。「!」マーク表示時は参照無効を示します。

![フォームプレビュー](/images/knowledge-base/knowledge-pipeline-orchestration-15.png)

---

## ステップ5：ナレッジベースの命名

![ナレッジベース命名](/images/knowledge-base/create-knowledge-pipeline-11.png)

デフォルトのナレッジベース名は「Untitled＋番号」、権限は「自分のみ」、アイコンはオレンジ色の書籍です。DSLファイルからインポートした場合は元のアイコンが適用されます。

左パネルの「設定」をクリックし、以下を設定してください。
- **名前とアイコン**  
  ナレッジベース名を決定します。絵文字選択、画像アップロード、画像URLによるアイコン設定が可能です。
- **ナレッジベース説明**  
  簡単な説明を記入してください。AIがデータをより適切に理解し検索できるようになります。未入力の場合はDifyのデフォルト検索戦略が使われます。
- **権限**  
  ドロップダウンから適切なアクセス権限を選択してください。

---

## ステップ6：テスト

いよいよ最終工程です！

設定が整ったら、まずは全設定の完全性チェックを行いましょう。チェックは右上のチェックリストボタンで行え、不足項目があると通知されます。

![チェックリスト](/images/knowledge-base/knowledge-pipeline-orchestration-16.png)

全設定完了後、テスト実行でパイプライン全体の動作確認を行い、不備がないことを確認した上で公開します。

### テスト実行

![テスト実行](/images/knowledge-base/knowledge-pipeline-orchestration-17.png)

1. **テスト開始**：**テスト実行**をクリック
2. **テストファイルインポート**：右側ウィンドウからファイル選択
  <Warning>
   **注意：** デバッグのため、1回につき1ファイルのみアップロード可能です。
  </Warning>
3. **パラメータ入力**：設定した入力フォームに従い必要なパラメータを入力
4. **パイプライン実行**：**次へ**をクリックしテスト開始

テスト時は、[履歴ログ](/ja-jp/guides/workflow/debug-and-preview/history-and-logs#アプリケーション実行履歴)（実行記録の確認）や[変数インスペクタ](/ja-jp/guides/workflow/debug-and-preview/variable-inspect)（ノード入出力内容の可視化）が問題特定に役立ちます。

![テストツール](/images/knowledge-base/knowledge-pipeline-orchestration-18.png)

{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}

---

[このページを編集する](https://github.com/langgenius/dify-docs/edit/main/ja-jp/guides/knowledge-base/knowledge-pipeline/knowledge-pipeline-orchestration.mdx) | [問題を報告する](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)

